package com.lhd.usermanagement.common;

/**
 * 返回工具类
 *
 * @author lhd
 */
public class BaseResultUtils {


    /**
     * 生成一个表示操作成功的响应对象。
     *
     * @param <T> 响应数据的类型。
     * @param data 操作成功时返回的数据。
     * @return 返回一个包含成功状态、数据和消息的BaseResponse对象。
     */
    public static <T> BaseResponse<T> success(T data) {
        // 创建并返回一个包含成功状态码、数据和成功消息的BaseResponse实例
        return new BaseResponse<>(0,data,"ok","");
    }


    /**
     * 根据给定的错误代码创建一个错误的BaseResponse对象。
     *
     * @param errorCode 代表错误的ErrorCode对象，包含错误码、错误信息等。
     * @param <T> BaseResponse中数据类型泛型。
     * @return 返回一个初始化为错误状态的BaseResponse对象，其中不包含数据，但包含错误码和错误信息。
     */
    public static <T> BaseResponse<T> error(ErrorCode errorCode,String description) {
        // 创建并返回一个包含错误状态码、空数据、错误消息和空成功消息的BaseResponse实例
        return new BaseResponse<>(errorCode,description);
    }

    public static <T> BaseResponse<T> error(ErrorCode errorCode) {
        // 创建并返回一个包含错误状态码、空数据、错误消息和空成功消息的BaseResponse实例
        return new BaseResponse<>(errorCode);
    }

    /**
     * 生成一个包含错误信息的BaseResponse对象。
     *
     * @param errorCode 错误状态码，用于标识具体的错误类型。
     * @param message 错误消息，用于描述错误的详细信息。
     * @param description 错误描述，对错误的进一步解释。
     * @param <T> BaseResponse对象的数据类型参数。
     * @return 返回一个包含错误状态码、空数据、错误消息和错误描述的BaseResponse实例。
     */
    public static <T> BaseResponse<T> error(int errorCode,String message,String description) {
        // 创建并返回一个包含错误状态码、空数据、错误消息和空成功消息的BaseResponse实例
        return new BaseResponse<>(errorCode,message,description);
    }

    /**
     * 创建一个表示错误的BaseResponse对象。
     *
     * @param errorCode  错误码对象，包含错误的代码、消息和描述。
     * @param message  错误消息，对错误进行简要描述。
     * @param description  错误描述，对错误进行详细解释。
     * @return  返回一个初始化了错误代码、消息和描述的BaseResponse对象。
     */
    public static <T> BaseResponse<T> error(ErrorCode errorCode, String message, String description) {
        return new BaseResponse(errorCode.getCode(), message, description);
    }

}
